import axios from 'axios'
import { getToken } from '@/utils/auth'

// 创建要给axios实例
const service = axios.create({
  // 基础地址，读取环境变量里面的信息
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  // 是否携带cookie
  // withCredentials: true, // send cookies when cross-domain requests
  // 过期时长
  timeout: 5000 // request timeout
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 逻辑：不是说 登录就要携带token，不是有token就要带！
    // 而是需要带token的请求就要交token，其他不需要的别带！
    // 首页、分类、详情   不需要
    // 我的订单、我的资料、我的设置   需要
    const whiteList = ['/user/favorites', '/user/houses','/user']
    if (whiteList.includes(config.url)||config.url.indexOf('/user/favorites')==0) {
      // 请求头token，注意 字段不一定是 X-Token,具体根据后端说明要求来
      if (getToken()) {
        // console.log(getToken());
        config.headers.authorization = JSON.parse(getToken()).token
      } else {
        return Promise.reject(new Error('该接口需要携带token'))
      }
    }
    return config
  },
  error => {
    // 错误处理
    console.log(error)
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  response => {
    const res = response.data
    // 集中的错误处理！
    // token过期判断！
    return res
  },
  // 服务器真的异常！
  error => {
    console.log(error)
    return Promise.reject(error)
  }
)

export default service
